package vista;

import java.awt.Color;
import java.awt.Graphics;
import java.util.Observable;
import java.util.Observer;

import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JToggleButton;

import control.ControlMostrarBanderita;
import control.ControladorViajar;
import model.ModeloObsrvable;
import model.lugares.Ciudad;

public class VistaMapaViajar extends VistaPanel3 implements Observer{

	private static final long serialVersionUID = 5962718871403009846L;
	private ModeloObsrvable modelo;
	private VentanaPrincipal vistaP;

		public VistaMapaViajar(VentanaPrincipal vistaP, ModeloObsrvable modelo) {
			super();
			this.modelo = modelo;
			this.vistaP = vistaP;
			this.modelo.addObserver(this);
		}
		
		@Override
		public void update(Observable arg0, Object arg1) {
			removeAll();
			repaint();
		}
		
		public void paintComponent(Graphics grafico) {		
			super.paintComponent(grafico);
			vistaP.sonido.verificarQueEstaSonando();
/*BAND*/	JButton btnNewButton = new JButton("");
			btnNewButton.setIcon(new ImageIcon(VistaMapaViajar.class.getResource("/vista/banderitas/"+modelo.getPoliciaPaisenMapa1().getNombrePais()+".png")));
			btnNewButton.setBackground(Color.BLACK);
			btnNewButton.setToolTipText(modelo.getPoliciaPaisenMapa1().getNombre() + ", " + modelo.getPoliciaPaisenMapa1().getNombrePais());
			btnNewButton.setBounds(this.obtenerPixelXCiudad(modelo.getPoliciaPaisenMapa1()), this.obtenerPixelYCiudad(modelo.getPoliciaPaisenMapa1()), 30, 20);
			add(btnNewButton);
			
			JToggleButton button =  new JToggleButton("");
			button.setIcon(new ImageIcon(VistaMapaViajar.class.getResource("/vista/banderitas/"+modelo.getPoliciaPaisenMapa2().getNombrePais()+".png")));
			button.setActionCommand(modelo.getPoliciaPaisenMapa2().toString());
			button.addActionListener(new ControlMostrarBanderita(this, modelo.getPoliciaPaisenMapa2().getNombrePais()));
			button.setToolTipText(modelo.getPoliciaPaisenMapa2().getNombre() + ", " + modelo.getPoliciaPaisenMapa2().getNombrePais());
			button.setBackground(Color.BLACK);
			button.setBounds(obtenerPixelXCiudad(modelo.getPoliciaPaisenMapa2()), obtenerPixelYCiudad(modelo.getPoliciaPaisenMapa2()), 30, 20);
			add(button);
			
			JToggleButton button_1 = new JToggleButton();
			button_1.setIcon(new ImageIcon(VistaMapaViajar.class.getResource("/vista/banderitas/"+modelo.getPoliciaPaisenMapa3().getNombrePais()+".png")));
			button_1.setActionCommand(modelo.getPoliciaPaisenMapa3().toString());
			button_1.addActionListener(new ControlMostrarBanderita(this, modelo.getPoliciaPaisenMapa3().getNombrePais()));
			button_1.setToolTipText(modelo.getPoliciaPaisenMapa3().getNombre() + ", " + modelo.getPoliciaPaisenMapa3().getNombrePais());
			button_1.setBackground(Color.BLACK);
			button_1.setBounds(obtenerPixelXCiudad(modelo.getPoliciaPaisenMapa3()), obtenerPixelYCiudad(modelo.getPoliciaPaisenMapa3()), 30, 20);
			add(button_1);
			
			JToggleButton button_2 = new JToggleButton();
			button_2.setIcon(new ImageIcon(VistaMapaViajar.class.getResource("/vista/banderitas/"+modelo.getPoliciaPaisenMapa4().getNombrePais()+".png")));
			button_2.setActionCommand(modelo.getPoliciaPaisenMapa4().toString());
			button_2.addActionListener(new ControlMostrarBanderita(this, modelo.getPoliciaPaisenMapa4().getNombrePais()));
			button_2.setToolTipText(modelo.getPoliciaPaisenMapa4().getNombre() + ", " + modelo.getPoliciaPaisenMapa4().getNombrePais());
			button_2.setBackground(Color.BLACK);
			button_2.setBounds(obtenerPixelXCiudad(modelo.getPoliciaPaisenMapa4()), obtenerPixelYCiudad(modelo.getPoliciaPaisenMapa4()), 30, 20);
			add(button_2);		
			
			ButtonGroup group = new ButtonGroup();
			group.add(btnNewButton);
			group.add(button);
			group.add(button_1);
			group.add(button_2);
			
			
/*BTN*/		JButton btnNewButton_1 = new JButton("");
/*VIAJAR*/	btnNewButton_1.setBackground(Color.red);
			btnNewButton_1.addActionListener(new ControladorViajar(vistaP, modelo, group));
			btnNewButton_1.setIcon(new ImageIcon(VistaMapaViajar.class.getResource("/vista/imagenes/VIAJARENMAPA.png")));
			btnNewButton_1.setBounds(400, 450, 160, 70);
			add(btnNewButton_1);
			
/*MAPA*/	JLabel label = new JLabel("");
			label.setIcon(new ImageIcon(VistaMapaViajar.class.getResource("/vista/ciudades/map2.jpg")));
			label.setBounds(0, 0, 670, 554);
			add(label);

		}		

		private double devolverLatCiudad(Ciudad ciudad){
			
			double[] coordenadas = new double[2];
			coordenadas = ciudad.getCoordenadas();
			return coordenadas[0];
		}	
		
		private double devolverLongCiudad(Ciudad ciudad){
			
			double[] coordenadas = new double[2];
			coordenadas = ciudad.getCoordenadas();
			return coordenadas[1];
		}
		
		private int obtenerPixelYCiudad(Ciudad ciudad){
			int coordenadaY = 102;
			int coordenadaLatitudCiudad = (int) Math.floor(devolverLatCiudad(ciudad));
			coordenadaY-=coordenadaLatitudCiudad;
			return((int) (coordenadaY * 3));
			
		}
		
		private int obtenerPixelXCiudad(Ciudad ciudad){
			int coordenadaX = 175;
			int coordenadaLongitudCiudad = (int) Math.floor(devolverLongCiudad(ciudad));
			coordenadaX+=coordenadaLongitudCiudad;
			return((int) (coordenadaX * 1.81));
			
		}	
		
		public void mostrarBanderitaElegida(String direccionImagen){
		JLabel labelBanderita = new JLabel("");
		labelBanderita.setBackground(Color.black);
		labelBanderita.setBounds(285, 445, 115, 80);
		labelBanderita.setIcon(new ImageIcon(VistaMapaViajar.class.getResource("/vista/banderitas2/"+direccionImagen+".jpg")));
		add(labelBanderita);
		setComponentZOrder(labelBanderita, 0);
		repaint();
		}
}
